#ifndef GRADECONFIGDIALOG_H
#define GRADECONFIGDIALOG_H

#include <QDialog>
#include <Common/common.h>

namespace Ui {
class GradeConfigDialog;
}

class GradeConfigDialog : public QDialog
{
    Q_OBJECT
public:
    explicit GradeConfigDialog(const GradeRuleConfig& config,
                               QWidget *parent = nullptr);
    ~GradeConfigDialog();

    GradeRuleConfig getConfig() const { return m_currentConfig; }

    int classifyWoodGrade(unsigned int** id,
                          unsigned int* len,
                          const GradeRuleConfig& config = GradeRuleConfig());

signals:
    void configChanged(const GradeRuleConfig& newConfig);

private slots:
    void onDefectCellChanged(int row, int column);
    void onThresholdChanged();
    void loadDefaults();
    void saveConfig();
    void loadConfig();

    // 新增：扶手面料切换槽函数
    void onHandrailTypeChanged(int index);

    void on_Bt_defaults_clicked();
    void on_Bt_confirm_clicked();
    void on_Bt_cancel_clicked();

private:
    void initDefectsTable();
    void updatePreview();
    void updateThresholdsVisibility(); // 新增：根据面料类型更新阈值显示

    Ui::GradeConfigDialog *ui;
public:
    GradeRuleConfig m_currentConfig;
    QHash<int, QString> m_defectNames; // ID到名称的映射
};

#endif // GRADECONFIGDIALOG_H
